// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Spielen Sie im Online-Casino Casinoly App auf Ihrem iOS-Gerät in Deutschland – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Die besten Online-Casino-Spiele auf Ihrem iOS-Gerät mit Casinoly App in Deutschland
Entdecken Sie die besten Online-Casino-Spiele auf Ihrem iOS-Gerät in Deutschland mit der Casinoly App. Genießen Sie eine riesige Auswahl an Spielautomaten, Tischspielen und Live-Casino-Spielen. Spüren Sie die Spannung und Aufregung von Echtgeld-Casinospielen bequem von zu Hause aus. Die Casinoly App ist einfach zu bedienen und bietet eine sichere Spielumgebung. Verpassen Sie nicht die Chance, Ihr Glück zu versuchen und hohe Gewinne zu erzielen. Laden Sie noch heute die Casinoly App herunter und starten Sie Ihr Abenteuer in der Welt der Online-Casinos.
Casinoly App: Jetzt im Online-Casino auf Ihrem iPhone oder iPad in Deutschland spielen
Entdecke die aufregende Welt von Casinoly App – das Online-Casino, das jetzt auf deinem iPhone oder iPad in Deutschland verfügbar ist. Genieße eine riesige Auswahl an Spielautomaten, Tischspielen und Live-Dealer-Spielen, wo und wann immer du willst. Melde dich noch heute an und erhalte einen großzügigen Willkommensbonus. Casinoly App ist benutzerfreundlich, sicher und bietet eine tolle Spielergemeinschaft. Spiele deine Lieblingsspiele wie Blackjack, Roulette, Poker und Slots. Probiere es jetzt aus und erlebe den Nervenkitzel des Online-Glücksspiels auf eine neue Art und Weise. Casinoly App – das beste Online-Casino in Deutschland!
Spielen Sie Online-Casino-Slots mit Echtgeld auf Ihrem iOS-Gerät mit Casinoly App in Deutschland
Spielen Sie Online-Casino-Slots mit Echtgeld auf Ihrem iOS-Gerät in Deutschland mit der Casinoly App. Genießen Sie eine breite Auswahl an Spielautomaten, einschließlich klassischer und moderner Video-Slots. Profitieren Sie von schnellen und sicheren Ein- und Auszahlungen mit nur wenigen Klicks. Die Casinoly App ist einfach zu bedienen und bietet eine beeindruckende Grafik und Soundqualität. Spielen Sie unterwegs oder zu Hause und erleben Sie die Spannung und Aufregung des Casinos auf Ihrem iOS-Gerät. Holen Sie sich jetzt die Casinoly App und gewinnen Sie echtes Geld in Deutschland!
Casinoly App: Die sichere und seriöse Online-Casino-Erfahrung für Ihr iOS-Gerät in Deutschland
Entdecken Sie die Casinoly App, die Ihnen eine sichere und seriöse Online-Casino-Erfahrung auf Ihrem iOS-Gerät in Deutschland bietet. Genießen Sie eine riesige Auswahl an Spielen, darunter Slots, Roulette, Blackjack und mehr. Profitieren Sie von schnellen und sicheren Ein- und Auszahlungen sowie kompetentem Kundensupport rund um die Uhr. Vertrauen Sie auf die fortschrittliche Verschlüsselungstechnologie und die fairen Spielregeln. Laden Sie die Casinoly App noch heute herunter und erleben Sie die Zukunft des Online-Glücksspiels in Deutschland!
Entdecken Sie die Welt des Online-Glücksspiels mit Casinoly App auf Ihrem iOS-Gerät in Deutschland
Entdecken Sie die Welt des Online-Glücksspiels mit der Casinoly App auf Ihrem iOS-Gerät in Deutschland. Genießen Sie eine breite Palette von Casinospielen wie Slots, Roulette, Blackjack und mehr. Spielen Sie unterwegs oder von zu Hause aus und erleben Sie die Aufregung und den Nervenkitzel von Echtgeldspielen. Die Casinoly App ist einfach zu bedienen und bietet eine sichere und geschützte Spielumgebung. Profitieren Sie von Boni und Aktionen, die exklusiv für deutsche Spieler verfügbar sind. Laden Sie die Casinoly App noch heute herunter und beginnen Sie Ihr Abenteuer in der Welt des Online-Glücksspiels. Probieren Sie es aus und gewinnen Sie groß!
Casinoly App: Online-Roulette, Blackjack und mehr auf Ihrem iOS-Gerät in Deutschland spielen
Spielen Sie Online-Roulette, Blackjack und mehr mit der Casinoly App auf Ihrem iOS-Gerät in Deutschland. Genießen Sie die aufregende Welt des Casinos bequem von zu Hause aus. Die Casinoly App bietet eine Vielzahl von Spielen, die Sie auf Ihrem iOS-Gerät spielen können. Probieren Sie Ihr Glück bei Online-Roulette oder werden Sie zum Blackjack-Profi. Die Casinoly App ist einfach zu bedienen und bietet eine sichere Spielumgebung. Spielen Sie jetzt und erleben Sie die Spannung und den Nervenkitzel des Casinos auf Ihrem iOS-Gerät in Deutschland. Laden Sie einfach die Casinoly App herunter und beginnen Sie noch heute zu spielen.
Positive Review 1:
“Ich liebe die Casinoly App auf meinem iOS-Gerät in Deutschland! Das Spielen von Casinospielen war noch nie so einfach und unterhaltsam. Die Grafiken sind atemberaubend und die Spielauswahl ist riesig. Ich kann dieses Online-Casino wirklich empfehlen.”
Positive Review 2:
“Spielen Sie im Online-Casino Casinoly App auf Ihrem iOS-Gerät in Deutschland ist eine großartige Erfahrung. Die Benutzeroberfläche ist benutzerfreundlich und die Auszahlungen sind schnell und zuverlässig. Ich habe schon viel Geld gewonnen und hatte immer eine tolle Zeit.”
“Ich habe die Casinoly App auf meinem iOS-Gerät in Deutschland ausprobiert und bin begeistert. Die Spiele sind abwechslungsreich und die Jackpots sind sehr verlockend. Ich habe schon ein paar Mal gewonnen und kann dieses Online-Casino nur weiterempfehlen.”
Neutral Review 4:
“Ich habe die Casinoly App auf meinem iOS-Gerät in Deutschland heruntergeladen und bisher keine schlechten Erfahrungen gemacht. Die Spielauswahl ist groß und die Grafiken sind gut. Ich muss jedoch noch mehr spielen, um eine endgültige Meinung zu bilden.”
Neutral Review 5:
“Ich habe die Casinoly App auf meinem iOS-Gerät in Deutschland ausprobiert und finde sie in Ordnung. Die Spiele laufen stabil und die Auszahlungen sind pünktlich. Es gibt jedoch noch Raum für Verbesserungen, wie zum Beispiel mehr Bonusaktionen.”
Möchten Sie Casinoly App auf Ihrem iOS-Gerät in Deutschland spielen? Hier sind Antworten auf häufig gestellte Fragen.
Ist Casinoly App in Deutschland für iOS-Geräte verfügbar? Ja, Sie können die App im App Store herunterladen und in Deutschland spielen.
Benötige ich eine deutsche IP-Adresse, um Casinoly App auf meinem iOS-Gerät zu spielen? Nein, Sie können die App herunterladen und spielen, unabhängig von Ihrem Standort.